/**
 * 
 */
package com.uminho.objects;

import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.uminho.http.Webservice;

import android.graphics.drawable.Drawable;

/****c* Objects/Service
* DESCRIPTION
* Objeto que representa um serviço registado no egend.me.
****
*/
public class Service extends Profile implements Serializable{
	String description, vatin;
	Integer rating, category_id;
	ArrayList<Resource> resources;
	ArrayList<Task> tasks;
	ArrayList<AppClient> colaboradores;

	/****f* Service/Service(..)
	* DESCRIPTION 
	* Cria um objeto Service.
	* INPUTS
	* Recebe um identificador do serviço, um username, o nome do serviço, o email associado, o número de telefone e telemóvel, o site, a morada, uma descrição e o identificador fiscal
	* RESULT 
	* Retorna um objeto do tipo Service.
	* EXAMPLE
	Service(1321321, "mmm", "Materiais e Materiais", "materiais@m.pt",
  "1232131245124", "3123123123", "http://m.pt",
  "Braga, Portugal", "Materiais variados", "281379812739");
	****
	*/
	public Service(Long id, String username, String name, String email, String phone, String mobile_phone,
			String website, String address, String  description, String vatin){
		super(id,username, name, email,phone,mobile_phone,website,'m',address);
		this.description=description;
		this.vatin=vatin;
	}

	/****f* Service/Service(...)
	* DESCRIPTION 
	* Cria um objeto Service, já com recursos, tarefas, colaboradores, classificação e categoria.
	* INPUTS
	* Recebe um identificador do serviço, um username, o nome do serviço, o email associado, o número de telefone e telemóvel, o site, a morada, uma descrição, o identificador fiscal, uma lista de recursos, uma lista de tarefas, uma lista de colaboradores, uma classificação e o identificador da categoria.
	* RESULT 
	* Retorna um objeto do tipo Service.
	****
	*/
	public Service(Long id, String username, String name, String email, String phone, String mobile_phone,
			String website, String address, String  description, String vatin, ArrayList<Resource> resources, ArrayList<Task> tasks,
			ArrayList<AppClient> cols, Integer rating, Integer category_id){
		super(id,username, name, email,phone,mobile_phone,website,'m',address);
		this.description=description;
		this.vatin=vatin;
		this.resources = resources;
		this.tasks = tasks;
		this.colaboradores = cols;
		this.rating = rating; 
		this.category_id= category_id;
	}
	
	public Service(String description, Long id, String title) {
		super();
		this.description = description;
		this.name = title;
		this.setId(id);
	}
	
	public Service(String description, String id, String title) {
		super();
		this.description = description;
		this.name = title;
		this.setId(id);
	}
	
	public Service() {
		super();
	}

	// GETTERS E SETTERS
	
	public String getDescription() {
		return description;
	}


	public void setDescription(String description) {
		this.description = description;
	}


	public String getVatin() {
		return vatin;
	}


	public void setVatin(String vatin) {
		this.vatin = vatin;
	}

	
	
	public Integer getRating() {
		return rating;
	}

	public void setRating(Integer rating) {
		this.rating = rating;
	}

	public Integer getCategory_id() {
		return category_id;
	}

	public void setCategory_id(Integer category_id) {
		this.category_id = category_id;
	}

	public ArrayList<Resource> getResources() {
		return resources;
	}

	public void setResources(ArrayList<Resource> resources) {
		this.resources = resources;
	}

	public ArrayList<Task> getTasks() {
		return tasks;
	}

	public void setTasks(ArrayList<Task> tasks) {
		this.tasks = tasks;
	}

	public ArrayList<AppClient> getColaboradores() {
		return colaboradores;
	}

	public void setColaboradores(ArrayList<AppClient> colaboradores) {
		this.colaboradores = colaboradores;
	}

	
	/****f* Service/setAvatar
	* DESCRIPTION 
	* Define um avatar do serviço. Esse avatar é uma imagem hospedada no servidor do Egend.me, por isso este método não recebe nenhum argumento.
	* RESULT 
	* É definido o avatar para o objeto associado e pronto a ser utilizado pela aplicação Android
	* EXAMPLE
	Webservice w = Webservice.getInstance();
	Service s = w.getService(3123123);
	s.setAvatar();
	****
	*/
	@Override
	public void setAvatar() throws MalformedURLException, IOException {
		String urlAvatar = Webservice.domain + "/avatars/service?id=" + this.getId().toString() + "&res=" + displaySize();
		InputStream is = fetch(urlAvatar);
		Drawable drawable = Drawable.createFromStream(is, "src");
		this.avatar = drawable;
	}
	
}
